//
// Created by yanhai on 2021/5/2.
//

#include <iostream>
#include <thread>

void func(const int &i, char *buf)
{
    // 通过打印i的地址可知，i并不是mvar的引用，而是值传递过来的。
    // buf指针指向的内存地址和mbuf是同一个
    // 因此可以总结，创建线程时传递的参数都是值传递，所以如果你写引用类型，则必须加const修饰
    std::cout << "i=" << &i << std::endl;
    printf("buf=%p\n", buf);
}

int main(int argc, char **argv)
{
    int mvar = 1;
    int &mvary = mvar;
    char mbuf[] = "this is test!";
    std::cout << "mvar=" << &mvar << std::endl;
    std::cout << "mvary=" << &mvary << std::endl;
    printf("mbuf=%p\n", mbuf);
    std::thread t(func, mvar, mbuf);
    t.join();
    return 0;
}
